package com.benmei.weike.dao;

import com.benmei.weike.common.filter.RequestPage;
import com.benmei.weike.dto.McScheduleDetailDto;
import com.benmei.weike.dto.mcCourse.*;
import com.benmei.weike.dto.teacher.McTeacherCourseDto;
import com.benmei.weike.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
@Mapper
public interface McCourseDao {
    int insert(@Param("pojo") McCourse pojo);

    int insertSelective(@Param("pojo") McCourse pojo);

    int insertList(@Param("pojos") List<McCourse> pojo);

    int update(@Param("pojo") McCourse pojo);

    List<Banner> findBanner();

    List<McCourseCategory> findCategory();

    Long findMcCourseCount(@Param("title") String title, @Param("category_id")Integer category_id);

    List<McCourseDto> findMcCourse(@Param("title") String title, @Param("category_id")Integer category_id, RowBounds row);

    McCourseDetailResponse findDetail(@Param("mcCourseId")Integer mcCourseId);

    List<McCourseGroupDto> findGroupsByMcCourseId(@Param("mcCourseId")Integer mcCourseId);

    List<McCourseScheduleDto> findScheduleList(@Param("mcCourseId")Integer mcCourseId);

    List<McCourseCommentDto> findComments(@Param("mcCourseId")Integer mcCourseId);

    McCourse findById(@Param("mcCourseId")Integer mcCourseId);

    void addActualBuyUserNumber(@Param("mcCourseId")Integer mcCourseId);


    //查询已购买的课程
    List<McBuyCourse> findBuyCourse(@Param("memb_id") Integer memb_id);

    //查询课程课的列表
    List<McCourseSchedule> findCourseScheduleList(@Param("course_id") Integer course_id);

    //根据学生id查询已购买课程数量
    Integer findMcSourceCountByMembId(@Param("memb_id") Integer memb_id);

    //查询课列表--详细信息包括老师名字
    List<McScheduleDetailDto> findScheduleListAndTeacher(@Param("courseId") Integer courseId,@Param("memb_id") Integer memb_id);

    //根据课程id查询课数量
    Integer findMcScheduleCountBySourceId(@Param("courseId") Integer courseId);

    //根据id 查询课
    HashMap findMcScheduleById(@Param("schedule_id") Integer schedule_id);
    //对课插入评价
    void addComment(Map<String, Object> reqPage);

    List<McCoursewareDto> findCourseware(@Param("schedule_id")Integer schedule_id);
    //根据课id和学生id查询评论数量
    Integer findMcScheduleCommentCount(Map<String, Object> reqPage);
    //根据老师id查询老师课程列表 course_state: 0 未完成 1：已完成
    List<McTeacherCourseDto> findMcTeacherCourseList(@Param("tea_id") Integer tea_id, @Param("course_state") int course_state);
//    查询老师课程总数  course_state: 0 未完成 1：已完成
    Integer findMcTeacherCourseCount(@Param("tea_id") Integer tea_id, @Param("course_state") int course_state);
}
